package com.zl.gmadmin.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zl.gmadmin.entity.SysMenu;
import com.zl.gmadmin.entity.SysRole;
import com.zl.gmadmin.payload.RoleQueryCriteria;
import com.zl.gmadmin.vo.SelectVo;
import com.zl.gmadmin.vo.role.SysRoleVo;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.Serializable;
import java.util.List;
import java.util.Set;

/**
 * @author zhangliang
 * @version 1.0
 * @date 2021/2/2 14:59
 */
public interface SysRoleService extends IService<SysRole> {
    /**
     * 根据用户查询相应角色
     * @param id
     * @return
     */
    List<SysRole> selectByUserId(Long id);

    /**
     * 查询所有的角色名称
     * @return
     */
    List<SelectVo> findAllName();


    /**
     * 分页查询角色信息
     * @param queryCriteria
     * @param page
     * @return
     */
    Object selectPageVo(RoleQueryCriteria queryCriteria, Page<SysRole> page);

    /**
     * 添加角色信息
     * @param sysRole
     * @param menus
     * @return
     */
    Boolean addRole(SysRole sysRole, List<SysMenu> menus);

    /**
     * 删除角色信息
     * @param ids
     * @return
     */
    Boolean delRole(Set<Long> ids);

    /**
     * 更新角色信息
     * @return
     * @param sysRole
     */
    Boolean updateRole(SysRole sysRole);


    /**
     * 根据roleId返回信息
     * @param id
     * @return
     */
     SysRoleVo getByRoleId(Serializable id) ;

    /**
     * 导出
     * @param response
     * @param ids
     */
    void download(HttpServletResponse response, List<Long> ids) throws IOException;
}
